video: Be consistent about play/pause
authorMatthias Clasen <mclasen@redhat.com>
Fri, 1 Jan 2021 21:25:54 +0000 (16:25 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 1 Jan 2021 21:25:54 +0000 (16:25 -0500)
Always check that the stream is prepared, and the
widget is mapped, before calling gtk_media_stream_play().

gtk/gtkvideo.c

index 5f3293ba64baff54c87b07e49e88314c2ea3cd50..7eee5fd5ba6305377f6b264ac5217ce400d29932 100644 (file)
@@ -152,7 +152,9 @@ gtk_video_map (GtkWidget *widget)
 
   GTK_WIDGET_CLASS (gtk_video_parent_class)->map (widget);
 
-  if (self->autoplay && self->media_stream)
+  if (self->autoplay &&
+      self->media_stream &&
+      gtk_media_stream_is_prepared (self->media_stream))
     gtk_media_stream_play (self->media_stream);
 }
 
@@ -560,7 +562,9 @@ gtk_video_notify_cb (GtkMediaStream *stream,
     gtk_video_update_playing (self);
   if (g_str_equal (pspec->name, "prepared"))
     {
-      if (self->autoplay && gtk_media_stream_is_prepared (stream))
+      if (self->autoplay &&
+          gtk_media_stream_is_prepared (stream) &&
+          gtk_widget_get_mapped (GTK_WIDGET (self)))
         gtk_media_stream_play (stream);
     }
 }
@@ -618,7 +622,9 @@ gtk_video_set_media_stream (GtkVideo       *self,
                         "notify",
                         G_CALLBACK (gtk_video_notify_cb),
                         self);
-      if (self->autoplay)
+      if (self->autoplay &&
+          gtk_media_stream_is_prepared (stream) &&
+          gtk_widget_get_mapped (GTK_WIDGET (self)))
         gtk_media_stream_play (stream);
     }